//C17:17.3:list.h
#ifndef LIST_H
#define LIST_H
#include <stdbool.h>

#define TSIZE  45
struct film
{
    char title[TSIZE];
    int rating;
};

typedef struct film Item;
typedef struct node
{
    Item item;
    struct node *next;
} Node;

typedef Node *List;
/*Initial List*/
void InitializeList(List *plist);
/*List is empty*/
bool ListIsEmpty(const List *plist);
/*List is Full*/
bool ListIsFull(const List *plist);
/*Count the item of List*/
unsigned int ListItemCount(const List *plist);
/*Add Item to List*/
bool AddItem(Item item, List *plist);
/*Travel List*/
void Traverse(const List *plist, void(*pfun)(Item item));
/*Clear List*/
void EmptyTheList(List *plist);
#endif